package com.nas.crocus.domain;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.map.annotate.JsonDeserialize;

import com.nas.crocus.ext.DateJacksonDeserializer;

@Entity
@Table(name = "Alojamiento")
public class Alojamiento {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "AlojamientoId")
    private Long id;
   
    @ManyToOne
    @JoinColumn(name = "eventoId")
    @Basic(fetch = FetchType.LAZY)
    private Evento evento;
    
    @ManyToOne
    @JoinColumn(name = "hotelId")
    @Basic(fetch = FetchType.EAGER)
    private Hotel hotel;
        
    @Column(name = "AlojamientoCantHabSimple", nullable = false)
    private Integer cantidadHabitacionSimple;
    
    @Column(name = "AlojamientoCantHabDoble", nullable = false)
    private Integer cantidadHabitacionDoble;
    
    @Column(name = "AlojamientoCantHabOtra", nullable = false)
    private Integer cantidadHabitacionOtra;
    
    @Column(name = "AlojamientoVencimiento1")
    private Date vencimiento1;
    
    @Column(name = "AlojamientoVencimiento2")
    private Date vencimiento2; 
    
    @Column(name = "AlojamientoVencimiento3")
    private Date vencimiento3;
    
    public Alojamiento() {
        this.cantidadHabitacionDoble = 0;
        this.cantidadHabitacionOtra = 0;
        this.cantidadHabitacionSimple = 0;
    }
    
    
    /**
     * @return the hotel
     */
    public Hotel getHotel() {
        return hotel;
    }
    /**
     * @param hotel the alojamiento to set
     */
    public void setHotel(Hotel hotel) {
        this.hotel = hotel;
    }
    public Evento getEvento() {
        return evento;
    }
    public void setEvento(Evento evento) {
        this.evento = evento;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    
    public Integer getCantidadHabitacionSimple() {
        return cantidadHabitacionSimple;
    }
    public void setCantidadHabitacionSimple(Integer cantidadHabitacionSimple) {
        this.cantidadHabitacionSimple = cantidadHabitacionSimple;
    }
    public Integer getCantidadHabitacionDoble() {
        return cantidadHabitacionDoble;
    }
    public void setCantidadHabitacionDoble(Integer cantidadHabitacionDoble) {
        this.cantidadHabitacionDoble = cantidadHabitacionDoble;
    }
    public Integer getCantidadHabitacionOtra() {
        return cantidadHabitacionOtra;
    }
    public void setCantidadHabitacionOtra(Integer cantidadHabitacionOtra) {
        this.cantidadHabitacionOtra = cantidadHabitacionOtra;
    }
    public Date getVencimiento1() {
        return vencimiento1;
    }
    @JsonDeserialize(using=DateJacksonDeserializer.class)
    public void setVencimiento1(Date vencimiento1) {
        this.vencimiento1 = vencimiento1;
    }
    public Date getVencimiento2() {
        return vencimiento2;
    }
    @JsonDeserialize(using=DateJacksonDeserializer.class)
    public void setVencimiento2(Date vencimiento2) {
        this.vencimiento2 = vencimiento2;
    }
    public Date getVencimiento3() {
        return vencimiento3;
    }
    @JsonDeserialize(using=DateJacksonDeserializer.class)
    public void setVencimiento3(Date vencimiento3) {
        this.vencimiento3 = vencimiento3;
    }
    
    
    
    
    
}
